1. Technical Field
The embodiments herein generally relate to digital video broadcasting and, more particularly to robust packet identifier (PID) filtering in digital video broadcasting.
2. Description of the Related Art
Digital Video Broadcasting-Handheld (DVB-H) is a technical specification for bringing broadcast services to handheld receivers, terrestrial television (TV), portable TVs, mobile phones, and other such mobile terminals. DVB-H can offer a downstream channel at high data rates to be used as standalone or as an enhancement of mobile telecommunication networks for typical handheld terminals. DVB-H systems are characterized by Multi-Protocol Encapsulation-Forward Error Correction (MPE-FEC), which is an additional error correction coding for Internet Protocol (IP) packets. Video programs are received in the form of messages called IP datagrams, which are transmitted as data bursts in small time slots. Each IP datagram contains a specific set of fields in a specific order so that the reader knows how to decode and read the stream of data received.
A Reed-Solomon (RS) code is an error-correcting code that works by oversampling a polynomial constructed from the data. So long as many of the data points are received correctly the receiver can recover the original polynomial even in the presence of a few bad points. The IP datagrams are collected in a 191×N matrix (e.g., N=256, 512, 768, or 1024) and are used to construct a MPE-FEC table. FIG. 1A is a schematic diagram illustrating a MPE-FEC table 100. The MPE-FEC table 100 includes an MPE frame 102 and a FEC frame 104. The MPE frame 102 includes an IP header 104 and IP data 106. Each row is appended by 64 bytes by applying (255, 191) Reed-Solomon code. If the number of IP datagrams is not sufficient, zero-padding columns are appended.
TS (Transport stream) is a communications protocol for audio, video, and data which is specified in MPEG-2 Part 1, Systems. MPE and FEC sections are mapped into 188-byte TS packets. FIG. 1B is a schematic diagram illustrating a data encapsulation process. FIG. 1B illustrates IP datagrams 110, sections 112, and TS packets 118. The IP datagrams 110 include an IP header 106 and an IP data 108. The sections 112 include a section header 114 and a section CRC 116. The TS packets 118 include a TS packet header 120. Each TS packet may have a 4-byte header that carries a thirteen bit PID (packet ID) to identify different services. Service Information (SI) and Program Specific Information (PSI) packets are also interleaved along with video packets.
FIG. 1C is a schematic diagram illustrating the syntax of a TS packet header 120 having a sync_byte 122, a transport_error_indicator 124, a payload_unit_start_indicator 126, a transport_priority 128, a PID 130, a transport_scrambling_control 132, an adaption_field_control 134, and a continuity_counter 136. The numerals shown above each of the fields of the TS packet header 120 represents the number of bits that constitute the respective field. The sync_byte 122 has 8 bits, and a value of 0×47. The transport_error_indicator 124 and the payload_unit_start_indicator 126 each have 1 bit. The payload_unit_start_indicator 126 is set to ‘1’ when at least one section begins in a given TS packet, and is set to ‘0’ when no section begins in the given TS packet. The transport_priority 128 has a single bit. The PID 130 has 13 bits and it indicates the type of data contained in the packet.
The transport_scrambling_control 132 has 2 bits, and its value is ‘00’. The adaption_field_control 134 has 2 bits. A value of the adaption_field_control 134 as ‘00’ indicates a null packet, a value of ‘01’ indicates a payload only, ‘10’ indicates an adaption field only and ‘11’ indicates an adaption field and payload. If the adaption_field_control 134 indicates the presence of an adaption field, its length is contained in the following (5th) byte. The continuity_counter 136 has a 4-bit size and is incremented for each successive packet with a payload. The continuity_counter 136 takes values from ‘0×0’ to ‘0×F’ and wraps around. If a TS packet is being sent twice, the value of the continuity_counter 136 does not change. The continuity_counter 136 is undefined for null packets. The syntax of a datagram_section is summarized in Table 1.
TABLE 1Syntax of datagram_sectionNUMBEROFSYNTAXBITSMNEMONICDATAGRAM_SECTION( ) { TABLE_ID8UIMSBF SECTION_SYNTAX_INDICATOR1BSLBF PRIVATE_INDICATOR1BSLBF RESERVED2BSLBF SECTION_LENGTH12UIMSBF MAC_ADDRESS_68UIMSBF MAC_ADDRESS_58UIMSBF RESERVED2BSLBF PAYLOAD_SCRAMBLING_CONTROL2BSLBF PAYLOAD_SCRAMBLING_CONTROL2BSLBF LLC_SNAP_FLAG1BSLBF CURRENT_NEXT_INDICATOR1BSLBF SECTION_NUMBER8UIMSBF LAST_SECTION_NUMBER8UIMSBF MAC_ADDRESS_48UIMSBF MAC_ADDRESS_38UIMSBF MAC_ADDRESS_28UIMSBF MAC_ADDRESS_18UIMSBF IF (LLC_SNAP_FLAG == “1”) {  LLC_SNAP ( ) } ELSE {   FOR (J=0;J<N1;J++) {   IP_DATAGRAM_DATA_BYTEBSLBF   } } IF (SECTION_NUMBER == LASTSECTION_NUMBER) {   FOR (J=0;J<N2;J++) {      STUFFING_BYTEBSLBF   } } IF (SECTION_SYNTAX_INDICATOR== “0”) {    CHECKSUM32UIMSBF } ELSE {   CRC_3232RPCHOF }}
The first step in constructing the MPE-FEC table at the receiving end is to extract the packets with the PID from the incoming packets that also include packets from other services and SI/PSI packets. This step is referred as PID filtering. PID filtering is generally the most important step because losing any packet or taking an extra packet may cause shifting of the data in the MPE-FEC table, which may then cause total failure in the MPE-FEC RS decoder. Typically, there are two important indicators that indicate the performance of any PID filter. The first indicator is the probability of error which indicates how many packets with PID equal to the needed (i.e., desired) PID are lost. The second indicator is the probability of a false alarm which indicates how many packets with PID not equal to the needed PID are taken with the packets.
The conventional approach for PID filtering is to match the PID field of each incoming packet with the required PID to determine whether the packet belongs to the required service. However, if there is any bit error in the PID field, the packet will be lost. The bit error rate (BER) is the ratio of error to the total number of bits. At a low BER (e.g., 10−2) the conventional approach will likely have a high probability of error. An N bit error (e.g., matching tolerance) in the incoming PID field may be allowed, which may decrease the probability of error, but only at the expense of increasing the probability of a false alarm.
FIGS. 2A and 2B illustrate the probability of error and the probability of a false alarm versus the BER at different cases of matching tolerance N=0, N=1, and N=2 when the needed PID is very close to the other PIDs. As can be seen from FIG. 2A, the probability of error for all matching tolerance values increase when the BER increase, and if one point is considered (10−2, for example), one will find that the probability of error decreases when the matching tolerance increases, but at the expense of increasing the probability of false alarms as shown in FIG. 2B. All the packets having difference between PIDs and needed PIDs equal to the ‘N’ bits will be accepted even if they have errors.
FIGS. 3A and 3B illustrate the probability of error and the probability of a false alarm versus the BER at different cases N=0, N=1, and N=2 when the needed PID is far from the other PIDs, by differing from the other PIDs by 4 bits. From FIGS. 3A and 3B one may conclude that if the received PIDs are far from each other, then the probability of error and the probability of false alarms are decreased. If N=2 and there is any packet (e.g., SI/PSI packet or any other service packet) with a PID different from the needed PID by 2 bits and this packet received without errors, the algorithm will select this packet as a matched packet and this will be a false alarm. Also, if any packet arrives with errors in the PID field that makes the incoming PID differ from the needed PID by N bits, it will be false alarm. Clearly, PID filtering is essential in wireless digital video broadcasting, accordingly, there exists a need for a technique for PID filtering to accurately construct the MPE-FEC table in a Digital Video Broadcasting transport stream.